package com.hwh.springdatajpademo.service;

import com.hwh.springdatajpademo.pojo.DTO.UserDTO;
import com.hwh.springdatajpademo.pojo.DTO.UserRoleDTO;
import com.hwh.springdatajpademo.pojo.User;
import com.querydsl.core.QueryResults;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.util.List;

public interface UserService {
    /**
     * 根据名称和email查询用户
     * @param name
     * @param email
     * @return
     */
    User findByNameAndEmail(String name,String email);

    /**
     * 查询所有用户并根据姓名倒序排序
     * @return
     */
    List<User> findAllByNameOrderDesc();

    /**
     * 分页查询所有实体
     * @param pageable
     * @return
     */
    QueryResults<User> findAllPage(Pageable pageable);

    /**
     * 部分字段映射查询
     * @param pageable
     * @return
     */
    List<UserDTO> findAllUserDTO(Pageable pageable);

    /**
     * 动态条件查询
     */
    List<User> findUserByPredicate(User user);

    /**
     * 部分字段映射查询（多表）
     */
    List<UserRoleDTO> findAllByUserRoleDTO();
}
